#!/bin/bash

#是否打开调试
#set -x

green() {
    echo -e "\033[32m$1\033[0m"
}

red() {
    echo -e "\033[31m$1\033[0m"
}

yellow() {
    echo -e "\033[33m$1\033[0m"
}

#变量读取
source ./agent_config.sh

# 变量替换
green "正在替换智能文书配置..."
docker_compose_file=./ai_doc_and_dify_base/docker-compose.yaml

sed "s/DATAWORKS_IP:.*/DATAWORKS_IP: $DATAWORKS_IP/g" -i $docker_compose_file
sed "s/LICENSE_HEART_ADDR:.*/LICENSE_HEART_ADDR: $LICENSE_HEART_ADDR/g" -i $docker_compose_file
sed "s/BASE_MODULE_IP:.*/BASE_MODULE_IP: $BASE_MODULE_IP/g" -i $docker_compose_file
sed "s/BASE_API_MODULE_IP:.*/BASE_API_MODULE_IP: $BASE_API_MODULE_IP/g" -i $docker_compose_file

# 替换工作空间id
if [ ! -z $WORKSPACEID ]; then
    green "替换工作空间参数..."
    find ai_doc_and_dify_base/import_data/ -type f -name "*.sql" -exec sed -i "s/$OLDWORKSPACEID/$WORKSPACEID/g" {} +
fi

green "替换智能文书配置完成"

#加载本地镜像
#如果有镜像文件则加载，否则后续启动时直接从harbor中拉取
green "加载文书镜像和基座镜像..."
for file in ai_doc_and_dify_base/docker_images/*; do
#    echo "找到文件 $file"
    if [ -f "$file" ]; then
        extension="${file##*.}"
        if [ $extension == "tar" ]; then
            green "load $file"
            sudo docker load -i $file
        fi
    fi
done
green "加载镜像完成"

#启动环境

#需要先启动基座环境，保证库表先migrate

green "正在启动基座 docker 环境..."

#sudo docker-compose -f $docker_compose_file up -d --force-recreate api > /dev/null  2>&1
sudo docker-compose -f $docker_compose_file up -d --force-recreate api

#导入库表
green "正在等待环境初始化..."
sleep 10
green "正在检查dify api 是否初始化完成"

#需要等待dify 原生库表导入完成，才能进行下一步
for i in {1..24}
do
    sudo docker logs ai_doc_and_dify_base-api-1 2>&1 | grep "Listening at: http://0.0.0.0:5001"
    if [ $? -eq 0 ]; then
        green "dify api container ready"
        break
    else
        echo "dify api container not ready, wait 5 seconds"
        sleep 5
    fi
done


green "正在导入新增dify 表结构..."
db_container=`docker ps  | grep db-1 | awk '{print $1}'`
for file in ai_doc_and_dify_base/import_table/*; do
#    echo "找到文件 $file"
    if [ -f "$file" ]; then
        extension="${file##*.}"
        if [ $extension == "sql" ]; then
            echo $file
            filename=$(basename "$file")
            echo $filename
            sudo cp $file ai_doc_and_dify_base/volumes/db/data/
            sudo docker exec -it $db_container psql -U postgres -d dify -f /var/lib/postgresql/data/$filename
            sudo rm ai_doc_and_dify_base/volumes/db/data/$filename
        fi
    fi
done

green "正在导入智能文书库表数据..."

for file in ai_doc_and_dify_base/import_data/*; do
#    echo "找到文件 $file"
    if [ -f "$file" ]; then
        extension="${file##*.}"
        if [ $extension == "sql" ]; then
            echo $file
            filename=$(basename "$file")
            echo $filename
            sudo cp $file ai_doc_and_dify_base/volumes/db/data/
            sudo docker exec -it $db_container psql -U postgres -d dify -f /var/lib/postgresql/data/$filename
            sudo rm ai_doc_and_dify_base/volumes/db/data/$filename
        fi
    fi
done

green "正在启动智能文书 docker 环境..."

sudo docker-compose -f $docker_compose_file up -d

green "智能文书 docker 环境 部署完成"

yellow  "当前还需要手动安装localai 插件, 如 langgenius-localai_0.0.3.difypkg"

